package cn.antblog.leetcode.array;

/**
 * @author ：YangJingyi
 * @date ：Created in 2022/2/17 11:16
 * @description：有序数组的平方
 * @modified By：
 * @version: 1.0
 */
public class SortedSquares {


    //给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。
    //示例 1： 输入：nums = [-4,-1,0,3,10] 输出：[0,1,9,16,100] 解释：平方后，数组变为 [16,1,0,9,100]，排序后，数组变为 [0,1,9,16,100]
    //示例 2： 输入：nums = [-7,-3,2,3,11] 输出：[4,9,9,49,121]


    static final int[] nums = {-4,-1,0,3,10};
    public static void method1(){
        //最大值在两端
        //定义两个指针 一个是始端 一个是末端
        //定义一个结果集
        int [] result = new int[nums.length];
        int resultIndex = nums.length-1;
        int right = nums.length-1;
        int left = 0;
        while (left <= right){
            if(nums[left]*nums[left] > nums[right]*nums[right]){
                result[resultIndex] = nums[left]*nums[left];
                resultIndex--;
                ++left;
            }else {
                result[resultIndex] = nums[right]*nums[right];
                resultIndex--;
                --right;
            }

        }
    }

    public static void main(String[] args) {
        method1();
    }
    public int[] sortedSquares(int[] nums) {
        int right = nums.length - 1;
        int left = 0;
        int[] result = new int[nums.length];
        int index = result.length - 1;
        while (left <= right) {
            if (nums[left] * nums[left] > nums[right] * nums[right]) {
                result[index--] = nums[left] * nums[left];
                ++left;
            } else {
                result[index--] = nums[right] * nums[right];
                --right;
            }
        }
        return result;
    }
}
